package com.ichoice.rabbitmq.rpc.helper.util;

import com.ichoice.rabbitmq.rpc.helper.consts.CommonContant;


/**
 * 消息队列相关数据生成
 *
 * @author xianrensawang
 * @date 2021/4/6
 */
public class MqMetadataUtils {

    /**
     * 生成自身服务队列名称
     *
     * @param appName 服务名称
     * @return 队列名称
     */
    public static String selfQueue(String appName) {
        return CommonContant.QUEUE + appName + "-" + CommonContant.version;
    }

    /**
     * 生成自身服务队列绑定key
     *
     * @param appName 服务名称
     * @return key
     */
    public static String selfKey(String appName) {
        return appName + "." + CommonContant.version + CommonContant.EVENT_KEY;
    }

    /**
     * 生成自身服务延迟队列名称
     *
     * @param appName 服务名称
     * @return 延迟队列名称
     */
    public static String selfDelayQueue(String appName) {
        return CommonContant.QUEUE + appName + "-" + CommonContant.DELAY + "-" + CommonContant.version;
    }

    /**
     * 生成自身服务延迟队列绑定key
     *
     * @param appName 服务名称
     * @return 延迟队列key
     */
    public static String selfDelayKey(String appName) {
        return appName + "." + CommonContant.DELAY + "." + CommonContant.version + CommonContant.EVENT_KEY;
    }

    /**
     * 生成自身回调队列名称
     *
     * @param appName 服务名
     * @param host    ip
     * @param port    端口
     * @return 回调队列名称
     */
    public static String selfBackQueue(String appName, String host, String port) {
        return CommonContant.QUEUE + appName + "-" + host + "-" + port + "-" + CommonContant.version;
    }

    /**
     * 生成自身回调队列路由key
     *
     * @param appName 服务名
     * @param host    ip
     * @param port    端口
     * @return 回调队列key
     */
    public static String selfBackKey(String appName, String host, String port) {
        return appName + "." + host + "." + port + "." + CommonContant.version + CommonContant.EVENT_KEY;
    }

    /**
     * 生成fanout路由key
     *
     * @param appName 服务名
     * @return fanout路由key
     */
    public static String fanoutKey(String appName) {
        return appName + "." + CommonContant.version + ".fanout";
    }
}
